package com.xwltz.database.config.properties;

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.annotation.IdType;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

import java.util.ArrayList;
import java.util.List;

/**
 * @description 客户端认证配置
 * @information on version 1.0 be created by xwltz at 2021/12/28 10:52
 */

@Data
@NoArgsConstructor
@Component
@ConfigurationProperties(prefix = DatabaseProperties.PREFIX)
public class DatabaseProperties {
	public static final String PREFIX = "framework.database";

	/**
	 * 是否启用 防止全表更新与删除插件
	 */
	private Boolean isBlockAttack = false;

	/**
	 * 是否启用  sql性能规范插件
	 */
	private Boolean isIllegalSql = false;

	/**
	 * 是否p6spy在控制台打印日志
	 */
	private Boolean p6spy = false;

	/**
	 * 分页大小限制
	 */
	private long maxLimit = -1;

	private DbType dbType = DbType.MYSQL;

	/**
	 * 溢出总页数后是否进行处理
	 */
	protected Boolean overflow = true;

	/**
	 * 生成 countSql 优化掉 join 现在只支持 left join
	 */
	protected Boolean optimizeJoin = true;

	/**
	 * 是否禁止写入
	 */
	private Boolean isNotWrite = false;

	/**
	 * 是否启用数据权限
	 */
	private Boolean isDataScope = true;

	/**
	 * 在执行sql时，忽略 租户插件自动拼接租户编码的表
	 * 仅 COLUMN 模式有效
	 */
	private List<String> ignoreTables = new ArrayList<>();

	/**
	 * id 类型
	 */
	private IdType idType = IdType.AUTO;
}
